CSS复习资料

CSS简述

叠层样式表(cascading style sheets)

选择器

选择的元素是要改变样式的HTML元素,通常一个css样式是包括一个选择器和声明,声明包括属性和对应的值

类似如下

元素选择器

/* 这是注释,选择body这个元素*/
/* 声明body 元素 的字体颜色(属性)为白色#fff(对应的值) */
body{
    color:#fff;
}

id选择器

顾名思义,选择HTML元素为id=”… “的元素。

/* 选择id="nav" 的元素 */
/* id选择器以 # 标识 */
#nav{
    color:#fff;
}

class选择器

当然,也容易理解,就是选择HTML元素为class=”…“的元素。

/* 选择 class="nav" 的元素 */
/* class选择器 以 . 标识 */
/* class可以同时存在与多个不同的HTML元素,所以可以选择多个元素*/ 
.nav{
    color:#fff;
}

通用选择器

* {属性:属性值}

属性选择器

/* 有title属性的所有元素 */
[title]
{
    color:#fff;
}
<p title>xxx 这里是白色色字体</p>

[type="checkbox"],
[type="radio"] {
    box-sizing: border-box;
    /* 1 */
    padding: 0;
    /* 2 */
}

子选择器

p>span{
	color:#fff;
}
<p><span>xxx这里是白色色字体</span></p>

兄弟选择器

<style>
/* 选择div的兄弟p */
div~p{
  color:#fff;
}
</style>
<div>
  <p>text</p><!--文字是非不是白色的-->
  <div>text</div>
  <p>text</p><!--文字是白色的-->
</div>
/*所谓兄弟就是类似上面这样的在同一个父dom下,并列的div和p*/

嵌套选择器

/* 可以同时将上面的选择器组合使用 */
/* 选择id为nav class为nav 的元素 */
#nav .nav{
    ...
}
/* 选择...下的p元素 */
#nav .nav>p{
    
}
等等

分组选择器

/* 将一组共同的属性,选择元素写到一起设置,逗号分隔 */
h1,h2,h3,h4,h5,h6{
	color:#000;
}

常用属性

/* 可以单独指定也可以一起指定属性值 */
/*便于代码可读高一点就分开指定*/

/*背景*/
background:(颜色背景图水平或平铺大小)
background-image:(图像)
background-origin:(指定在哪里放置图像)
(content-boxpadding-boxborder-box)
background-clip:(指定背景的绘制区域)
background-size:(指定大小)

/*渐变属性*/
linear-gradient:(添加浏览器前缀使用线性渐变)
线性渐变 - 从上到下默认情况下
指定topleft等指定方向
radial-gradient:(..径向渐变)

/*文本*/
color:颜色
text-align:对齐方式justify 两端对齐
text-decoration:文本修饰,(下划线主要用来删除链接的下划线...)
text-index:文本缩进第一行
text-transform:转换字母大小写等
text-shadow:文本阴影
text-overflow:指定文本如何显示溢出内容(hidden)
letter-spacing:字符间距
line-height:行高
vertical-align:元素的垂直对齐
white-space:指定空白字符的如何处理
word-warp:可以指定长文本换行(break-word)

/* 字体 */
font-family:设置文本字体系列
font-style:设置斜体正常等等
font-size:大小浏览器默认16px
font-weight:设置字体粗细

/* 列表 */
list-style:(项标志圆点什么的罗马数字什么的一般用来取消标志 )

/* 边框 */
border:(指定简写)()
border-style:(none,dotted点线dashed虚线solid实线double双边框,...)
border-width:宽度
border-color:边框颜色可设置透明 transparent
border-top:(指定顶部边框。。其他类似)
CSS  border: 1px solid rgba(0, 0, 0, 0.1);
意思是: 设定元素的边框为 1 像素宽实线颜色使用 rgba 来表达
其中rgba  CSS3 中的属性rgba 括号中前 3 个数字代表着 red green blue 三种颜色的 rgb (0-255),最后一个是设定这个颜色的透明度即 alpha 范围从 0  1,越接近 1,代表透明度越低
border-radius:(设置圆角)
(左上右上右下左下)
(左上右上左下右下)
(左上右下右上左下)
(全部)
可以单独设置每个
box-shadow:(阴影)
(h-shadow   v-shadow   blur   spread   color   insect)
水平阴影    垂直阴影   模糊    阴影尺寸  颜色   外阴影转到内阴影
border-image:(使用图片创建一个边框)
box-sizing:(元素上设置了 border-box; 
 padding(内边距)  border(边框) 也包含在 width  height )
* {
    box-sizing: border-box;
} 

/* 轮廓 */
/*区别于边框位于边框外围*/
outline:(类型一般为none颜色宽度)

/* 边距 */
/* 外边距 */
/*margin 没有背景颜色,是完全透明的 */
margin:(所有)
margin:()
margin:(上下左右)
margin:(左右)
/* 内边距 */
/* 清空内边距会被背景色填充 */
padding:类似margin

/* 尺寸 */
width:宽度 (100 %, 100 px|em, 50vw)
max-width,min-width
height:高度
max-width,min-width

/* 显示 */
display:(指定如何显示none,block,inline,inline-block,flex,table...)
visiblity:(指定元素可见还是隐藏hidden,)
/* 区别与hidden和none,hidden不可见但是占据空间,none是不显示不占据 */

/* 定位 */
position:(static(默认),relative,fixed,absolute,sticky)
/* sticky 粘性定位*/

/* overflow */
overflow:(visible(默认),hidden,scroll,auto,inherit)

/* 浮动 */
float:(指定浮动的方向,left,right)
clear:(清除浮动,指定元素两侧不能出现浮动元素,both)

常用伪类伪元素

为选取的选择器添加特殊效果时的样式

选择器名:伪类名{
	属性:;
}
/* 状态 */
/* 例如 */
/* a 这个元素被鼠标划过的样式指定 */
a:hover{
    color:#fff;
}
/* a 被选择 */
a:active{
    ...
}
/* visited */
a:visited{
    /*被访问过*/
}
a:link{
    /* 没访问 */
}
/*等等*/
/*a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
a:active 必须被置于 a:hover 之后,才是有效的。*/

/* 选择子元素 */
ul:first-child{
    /*选取所有元素的第一个子元素ul*/
}
<div>
	<ul>被选择</ul>
	<ul>不被选择</ul>
	<div><ul>被选择</ul></div>
</div>
ul:last-child{
    /*选择所有ul的最后一个子元素*/
}
:not(p){
    /*选择p以外的元素*/
}
/* 使用 nth-child(n) 设置 表格每行颜色*/
td,th {
    padding: 12px;
}

table tr:nth-child(odd){
    /* odd设置奇数行 */
    /* even设置偶数 */
    background: #fff;
}
table tr:first-child{
    background: #ccc;
}

/* 根据元素属性的伪类 */
input:focus{
    /* 获得焦点 */
}
input:optional{
    /* 选择没有 required 的input元素 */
}
input:required{
    /* 选择有 required 的input元素 */
}
input:read-only{
    /*选择只读属性的input*/
}
input:read-write{
    /* 选择没有只读属性的input*/
}

/* 插入内容 */
/*为每个p元素插入以下内容*/
p:before{
    content:'before';
    /*必须指定content*/
}
p:after{
    content:'after';
    /*必须指定content*/
}
/* 结果:*/
<p>before 我是本来的内容 after</p>

伪类和伪元素的区别

  • 伪元素和伪类都是为了给一些特殊需求加样式,定义上基本一致。
  • 伪类像类选择器一样给已存在某个元素添加额外的样式;伪元素则是给自己虚拟的元素添加样式。
  • 已存在元素是指DOM中存在的,伪元素则是虚拟的一种,样式也是给这个虚拟的元素使用的。比如虚拟一个div
  • 声明不同,伪类和选择器之间用一个冒号隔开,伪元素则是两个冒号隔

媒体类型


@media screen{
	/*在浏览器屏幕上的一直组css样式*/
}
@media print{
    /* 在打印的时候使用的样式*/
}

/*选项*/
[
	all,所有媒体设备
。。。等等
]
/*媒体查询*/
max-widthmin-width
最大宽度以下
最小宽度以上
@media (max-width:993px){
    .archive-list li::before{
        content: '';
        display: inline-block;
        width: 10px;
        position: absolute;
        height: 10px;
        left: 7px;
        margin-top: 7px;
        border-radius: 50%;
        background: #abc2d3;
    }
}

字体

@font-face{
	/* 引用何种字体*/
    font-family:font_p;
    src:url('');
}
/* 使用 */
p{
  font-family:font_p;  
}

转换和过度属性

常用于动画效果

/* 使用浏览器前缀 transfom */
/*
-webkit- 
-ms-
-moz-
*/

/* 2D转换 */

translate(指定左x轴和顶部y轴)
/*translate(100px,100px) 左往右移100 顶部往下100*/
rotate(顺时针旋转元素)
/*rotate(50deg)*/
scale(设置元素增大和减少,宽高)
/* scale(2,3) 增大到宽度2倍,高度3倍*/
skew(设置倾斜)
/* skewY() skewX()*/
matrix(上述的混和写法)

/* 3D 转换*/

主要是rotateY()和rotateX()

/* 过度 */
transition(指定要添加效果的css属性和持续时间)
/* 例如 */
div{
    width:100px;
    /* 添加给宽度变化的动画过度效果 2s*/
    transition:width 2s;
}
div:hover{
    /*动画效果鼠标经过div宽度变为200*/
    width:200px;
}

动画效果

@keyframes animation_name{
    from{
        /*一组原始属性*/
        /*from等同0%*/
    }
    .../*可以根据百分比指定*/
    to{
        /*要变化到的属性*/
        /*等同100%*/
    }
}
/* 使用 类型font定义的使用*/
div{
    /*animation指定动画名称,时间*/
    animation:animation_name 5s;
    /*其他浏览器兼容加前缀*/
}


奖励一下